#include <stdio.h>
#define MaxSize 100
typedef int DataType;

typedef struct
{
	DataType list[MaxSize];
	int size;
} SeqList;

void ListInitiate(SeqList *L){
	L->size = 0;
}
int ListLength(SeqList L){
	return L.size;
}
int ListInsert(SeqList *L, int i, DataType x){
	int j;
	if(L->size >= MaxSize)
	{
		printf("顺序表已满无法插入！\n");
		return 0;
	}
	else if(i < 0 || i > L->size)
	{
		printf("参数i不合法！\n");
		return 0;
	} else{
		//此段程序有误
		for (j =  L->size - 1; j >= i; j--)
			L->list[j+1] = L->list[j];
		L->list[i] = x;
		L->size ++;
		return 1;
	}
}

int ListDelete(SeqList *L, int i, DataType *x){
	int j;
	if(L->size <= 0){
		printf("顺序表已空无数据可删！\n");
		return 0;
	} else if(i < 0 || i > L->size-1){
		printf("参数i不合法");
		return 0;
	} else{
		//此段程序有误
		*x = L->list[i];
		for (j = i+1; j <= L->size-1; j++)
			L->list[j-1] = L->list[j];
		L->size--;
		return 1;
	}
}

int ListGet(SeqList L, int i, DataType *x){
	if(i < 0 || i > L.size-1){
		printf("参数i不合法!\n");
		return 0;
	} else{
		*x = L.list[i];
		return 1;
	}
}

// 有错误：实现函数体，实现在L内查找x。
// 当x存在于L中时，返回x所在的索引的最小值；
//当x不存在于L中时，返回-1.

int ListSearch(SeqList L, DataType x){
	for (int i = 0; i < L.size; ++i) {
		if(L.list[i] == x){
			return i;
		}
	}
	return -1;
}

int main(){
	SeqList myList;
	int i , x;
	ListInitiate(&myList);
	for (i = 0; i < 10; i++)
		ListInsert(&myList, i, i+1);
	ListDelete(&myList, 4, &x);
	for(i = 0; i < ListLength(myList); i++){
		//此段程序有一处错误
		ListGet(myList, i, &x);
		printf("%d ",x);
	}
	printf("\n");
	printf("%d ", ListSearch(myList,9));
	printf("%d ", ListSearch(myList,11));
	return 0;
}
